home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / cheesesauce / abreed3.lha / CD32JOY < prev    next >
Text File  |  1995-03-31  |  7KB  |  442 lines

  1.  
  2. ;    opt    O+,D+,L+,P=68020
  3.  
  4.  
  5.     INCDIR    include:
  6.     include "libs:system.gs"
  7.     INCLUDE    libraries/lowlevel.i
  8. ;    INCLUDE    exec/exec_lib.i
  9.  
  10. _LVOReadJoyPort    EQU    -$1e
  11.  
  12.  
  13. ;    XDEF    _InitLowLevel
  14.  
  15. _InitLowLevel
  16.     lea    _lowlevel(pc),a1
  17.     moveq    #1,d0
  18.     move.l    4.w,a6
  19.     jsr    _LVOOpenLibrary(a6)
  20.     tst.l    d0
  21.     beq.s    .NoLowLib
  22.     move.l    d0,_LowBase
  23.     rts
  24.  
  25. .NoLowLib
  26.     moveq    #-1,d0
  27.     rts
  28.  
  29.  
  30. ;    XDEF    _CloseLowLevel
  31.  
  32. _CloseLowLevel
  33.     move.l    _LowBase(pc),a1
  34.     tst.l    a1
  35.     beq.s    .Exit
  36.     move.l    4.w,a6
  37.     jsr    _LVOCloseLibrary(a6)
  38. .Exit
  39.     rts
  40.  
  41.  
  42.  
  43. ; pass port number in d0 0-3
  44.  
  45. ;    XDEF    _ReadJoy
  46. _ReadJoy1
  47.     move.l a6,-(a7)
  48.     move.l #1,d0
  49.     move.l    _LowBase(pc),a6
  50.     jsr    _LVOReadJoyPort(a6)
  51.  
  52.     move.l (a7)+,a6
  53.     move.l d0,d1
  54. ;    and.l #$00FF000F,d0
  55.  
  56.     and.l    #JP_TYPE_MASK,d1
  57. ;
  58. ; bits in d1
  59. ;
  60. ;
  61.     cmp.l    #JP_TYPE_NOTAVAIL,d1     
  62.     beq.b    .Empty
  63.  
  64.     cmp.l    #JP_TYPE_GAMECTLR,d1 
  65.     beq.b    .GameCtrl
  66.  
  67.     cmp.l    #JP_TYPE_MOUSE,d1    
  68.     beq    .Mouse
  69.  
  70.     cmp.l    #JP_TYPE_JOYSTK,d1   
  71.     beq    .Joystick
  72.  
  73. ;    cmp.l    #JP_TYPE_UNKNOWN,d1  
  74. ;
  75. ;
  76. ; type is an unknown type 
  77. ;
  78. .Empty
  79. ;
  80.     rts
  81. ;
  82. .GameCtrl
  83.  
  84. ;    these are the bit defs..
  85. ;
  86. ;     JPF_BUTTON_BLUE         Blue - Stop
  87. ;     JPF_BUTTON_RED          Red - Select
  88. ;     JPF_BUTTON_YELLOW       Yellow - Repeat
  89. ;     JPF_BUTTON_GREEN        Green - Shuffle
  90. ;     JPF_BUTTON_FORWARD      Charcoal - Forward
  91. ;     JPF_BUTTON_REVERSE      Charcoal - Reverse
  92. ;     JPF_BUTTON_PLAY         Grey - Play/Pause
  93. ;     JPF_JOY_UP              Up
  94. ;     JPF_JOY_DOWN            Down
  95. ;     JPF_JOY_LEFT            Left
  96. ;     JPF_JOY_RIGHT           Right
  97.  
  98.  move.l #KeyMap,a5
  99.  moveq #0,d5
  100.  move.b forward_key,d5
  101.  move.l d0,d1
  102.  and.l #JPF_JOY_UP,d0
  103.  sne (a5,d5.w)
  104.  move.b backward_key,d5
  105.  move.l d1,d0
  106.  and.l #JPF_JOY_DOWN,d0
  107.  sne (a5,d5.w)
  108.  move.b turn_left_key,d5
  109.  move.l d1,d0
  110.  and.l #JPF_JOY_LEFT,d0
  111.  sne (a5,d5.w)
  112.  move.b turn_right_key,d5
  113.  move.l d1,d0
  114.  and.l #JPF_JOY_RIGHT,d0
  115.  sne (a5,d5.w)
  116.  
  117.  move.b fire_key,d5
  118.  move.l d1,d0
  119.  and.l #JPF_BUTTON_GREEN,d0
  120.  sne (a5,d5.w)
  121.  
  122.  move.b operate_key,d5
  123.  move.l d1,d0
  124.  and.l #JPF_BUTTON_YELLOW,d0
  125.  sne (a5,d5.w)
  126.  
  127.  move.b run_key,d5
  128.  move.l d1,d0
  129.  and.l #JPF_BUTTON_RED,d0
  130.  sne (a5,d5.w)
  131.  
  132.  move.b duck_key,d5
  133.  move.l d1,d0
  134.  and.l #JPF_BUTTON_BLUE,d0
  135.  beq.s .notduckbutpre
  136.  tst.b .ducklast
  137.  bne.s .notduckbut
  138.  st .ducklast
  139.  sne (a5,d5.w)
  140. .notduckbutpre:
  141.  clr.b .ducklast
  142. .notduckbut:
  143.  
  144.  move.b force_sidestep_key,d5
  145.  move.l d1,d0
  146.  and.l #JPF_BUTTON_FORWARD,d0
  147.  sne (a5,d5.w)
  148.  
  149.  move.l d1,d0
  150.  and.l #JPF_BUTTON_REVERSE,d0
  151.  beq.s .nonextweappre
  152.  tst.b .heldlast
  153.  bne.s .nonextweap
  154.  st .heldlast
  155.  moveq #0,d0
  156.  moveq #0,d2
  157.  move.b PLR1_GunSelected,d2
  158.  move.l #PLR1_GunData,a6
  159.  move.l #GUNVALS,a5
  160.  
  161. .findcurrent: 
  162.  cmp.b (a5,d0.w),d2
  163.  beq.s .foundcurrent
  164.  add.b #1,d0
  165.  bra .findcurrent
  166.  
  167. .foundcurrent:
  168.  
  169.  moveq #0,d2
  170. .picknext:
  171.  add.b #1,d0
  172.  cmp.b #4,d0
  173.  ble.s .notfirst
  174.  move.b #0,d0
  175. .notfirst:
  176.  
  177.  moveq #0,d2
  178.  moveq #0,d3 
  179.  move.b (a5,d0.w),d2
  180.  move.b d2,d3
  181.  lsl.w #5,d2
  182.  tst.b 7(a6,d2.w)
  183.  beq.s .picknext
  184.  move.b d3,PLR1_GunSelected
  185.  
  186.  bra .nonextweap
  187.  
  188. .nonextweappre:
  189.  clr.b .heldlast
  190. .nonextweap:
  191.  
  192.  rts
  193.  
  194. .heldlast: dc.b 0
  195. .ducklast: dc.b 0
  196.  
  197. .Joystick
  198.  
  199.  move.l #KeyMap,a5
  200.  move.l #SineTable,a0
  201.  
  202.  btst #1,$dff00c
  203.  sne d0
  204.  btst #1,$dff00d
  205.  sne d1
  206.  btst #0,$dff00c
  207.  sne d2
  208.  btst #0,$dff00d
  209.  sne d3
  210.  moveq #0,d5
  211.  move.b fire_key,d5
  212.  btst #7,$bfe001
  213.  seq (a5,d5.w)
  214.  
  215.  move.b turn_left_key,d5
  216.  move.b d0,(a5,d5.w)
  217.  move.b turn_right_key,d5
  218.  move.b d1,(a5,d5.w)
  219.  eor.b d0,d2
  220.  move.b forward_key,d5
  221.  move.b d2,(a5,d5.w)
  222.  eor.b d1,d3
  223.  move.b backward_key,d5
  224.  move.b d3,(a5,d5.w)
  225.  rts
  226.  
  227. .Mouse
  228.     rts
  229.  
  230.  
  231.  
  232.  
  233. _ReadJoy2
  234.     move.l a6,-(a7)
  235.     move.l #1,d0
  236.     move.l    _LowBase(pc),a6
  237.     jsr    _LVOReadJoyPort(a6)
  238.  
  239.     move.l (a7)+,a6
  240.     move.l d0,d1
  241. ;    and.l #$00FF000F,d0
  242.  
  243.     and.l    #JP_TYPE_MASK,d1
  244. ;
  245. ; bits in d1
  246. ;
  247. ;
  248.     cmp.l    #JP_TYPE_NOTAVAIL,d1     
  249.     beq.b    .Empty
  250.  
  251.     cmp.l    #JP_TYPE_GAMECTLR,d1 
  252.     beq.b    .GameCtrl
  253.  
  254.     cmp.l    #JP_TYPE_MOUSE,d1    
  255.     beq    .Mouse
  256.  
  257.     cmp.l    #JP_TYPE_JOYSTK,d1   
  258.     beq    .Joystick
  259.  
  260. ;    cmp.l    #JP_TYPE_UNKNOWN,d1  
  261. ;
  262. ;
  263. ; type is an unknown type 
  264. ;
  265. .Empty
  266. ;
  267.     rts
  268. ;
  269. .GameCtrl
  270.  
  271. ;    these are the bit defs..
  272. ;
  273. ;     JPF_BUTTON_BLUE         Blue - Stop
  274. ;     JPF_BUTTON_RED          Red - Select
  275. ;     JPF_BUTTON_YELLOW       Yellow - Repeat
  276. ;     JPF_BUTTON_GREEN        Green - Shuffle
  277. ;     JPF_BUTTON_FORWARD      Charcoal - Forward
  278. ;     JPF_BUTTON_REVERSE      Charcoal - Reverse
  279. ;     JPF_BUTTON_PLAY         Grey - Play/Pause
  280. ;     JPF_JOY_UP              Up
  281. ;     JPF_JOY_DOWN            Down
  282. ;     JPF_JOY_LEFT            Left
  283. ;     JPF_JOY_RIGHT           Right
  284.  
  285.  move.l #KeyMap,a5
  286.  moveq #0,d5
  287.  move.b forward_key,d5
  288.  move.l d0,d1
  289.  and.l #JPF_JOY_UP,d0
  290.  sne (a5,d5.w)
  291.  move.b backward_key,d5
  292.  move.l d1,d0
  293.  and.l #JPF_JOY_DOWN,d0
  294.  sne (a5,d5.w)
  295.  move.b turn_left_key,d5
  296.  move.l d1,d0
  297.  and.l #JPF_JOY_LEFT,d0
  298.  sne (a5,d5.w)
  299.  move.b turn_right_key,d5
  300.  move.l d1,d0
  301.  and.l #JPF_JOY_RIGHT,d0
  302.  sne (a5,d5.w)
  303.  
  304.  move.b fire_key,d5
  305.  move.l d1,d0
  306.  and.l #JPF_BUTTON_GREEN,d0
  307.  sne (a5,d5.w)
  308.  
  309.  move.b operate_key,d5
  310.  move.l d1,d0
  311.  and.l #JPF_BUTTON_YELLOW,d0
  312.  sne (a5,d5.w)
  313.  
  314.  move.b run_key,d5
  315.  move.l d1,d0
  316.  and.l #JPF_BUTTON_RED,d0
  317.  sne (a5,d5.w)
  318.  
  319.  move.b duck_key,d5
  320.  move.l d1,d0
  321.  and.l #JPF_BUTTON_BLUE,d0
  322.  beq.s .notduckbutpre
  323.  tst.b .ducklast
  324.  sne (a5,d5.w)
  325.  bne.s .notduckbut
  326.  st .ducklast
  327.  bra .notduckbut
  328. .notduckbutpre:
  329.  clr.b .ducklast
  330. .notduckbut:
  331.  
  332.  move.b force_sidestep_key,d5
  333.  move.l d1,d0
  334.  and.l #JPF_BUTTON_FORWARD,d0
  335.  sne (a5,d5.w)
  336.  
  337.  move.l d1,d0
  338.  and.l #JPF_BUTTON_REVERSE,d0
  339.  beq.s .nonextweappre
  340.  tst.b .heldlast
  341.  bne.s .nonextweap
  342.  st .heldlast
  343.  moveq #0,d0
  344.  move.b PLR2_GunSelected,d2
  345.  move.l #PLR2_GunData,a6
  346.  move.l #GUNVALS,a5
  347.  
  348. .findcurrent: 
  349.  cmp.b (a5,d0.w),d2
  350.  beq.s .foundcurrent
  351.  add.b #1,d0
  352.  bra .findcurrent
  353.  
  354. .foundcurrent: 
  355.  
  356.  moveq #0,d2
  357.  
  358. .picknext:
  359.  add.b #1,d0
  360.  cmp.b #4,d0
  361.  ble.s .notfirst
  362.  move.b #0,d0
  363. .notfirst:
  364.  
  365.  moveq #0,d2
  366.  moveq #0,d3
  367.  move.b (a5,d0.w),d2
  368.  move.b d2,d3
  369.  lsl.w #5,d2
  370.  tst.b 7(a6,d2.w)
  371.  beq.s .picknext
  372.  move.b d3,PLR2_GunSelected
  373.  
  374.  bra .nonextweap
  375.  
  376. .nonextweappre:
  377.  clr.b .heldlast
  378. .nonextweap:
  379.  
  380.  rts
  381.  
  382. .heldlast: dc.b 0
  383. .ducklast: dc.b 0
  384.  
  385. .Joystick
  386.  
  387.  move.l #KeyMap,a5
  388.  move.l #SineTable,a0
  389.  
  390.  btst #1,$dff00c
  391.  sne d0
  392.  btst #1,$dff00d
  393.  sne d1
  394.  btst #0,$dff00c
  395.  sne d2
  396.  btst #0,$dff00d
  397.  sne d3
  398.  moveq #0,d5
  399.  move.b fire_key,d5
  400.  btst #7,$bfe001
  401.  seq (a5,d5.w)
  402.  
  403.  move.b turn_left_key,d5
  404.  move.b d0,(a5,d5.w)
  405.  move.b turn_right_key,d5
  406.  move.b d1,(a5,d5.w)
  407.  eor.b d0,d2
  408.  move.b forward_key,d5
  409.  move.b d2,(a5,d5.w)
  410.  eor.b d1,d3
  411.  move.b backward_key,d5
  412.  move.b d3,(a5,d5.w)
  413.  rts
  414.  
  415. .Mouse
  416.     rts
  417.  
  418.  
  419. ;BUTVALS
  420. ; dc.l JPF_BUTTON_BLUE         Blue - Stop
  421. ; dc.l JPF_BUTTON_RED          Red - Select
  422. ; dc.l JPF_BUTTON_YELLOW       Yellow - Repeat
  423. ; dc.l JPF_BUTTON_GREEN        Green - Shuffle
  424. ; dc.l JPF_BUTTON_FORWARD      Charcoal - Forward
  425. ; dc.l JPF_BUTTON_REVERSE      Charcoal - Reverse
  426. ; dc.l JPF_BUTTON_PLAY         Grey - Play/Pause
  427. ; dc.l JPF_JOY_UP              Up
  428. ; dc.l JPF_JOY_DOWN            Down
  429. ; dc.l JPF_JOY_LEFT            Left
  430. ; dc.l JPF_JOY_RIGHT           Right
  431.  
  432. Data:
  433.  
  434. _LowBase
  435.     dc.l    0
  436.  
  437. _lowlevel
  438.     dc.b    'lowlevel.library',0
  439.     even
  440.  
  441. ;    END
  442.